Generally, a CAM is designed such that a user supplies a data bus (e.g., lookup data) comprising various data lines and the CAM searches a table with entries to determine if all data lines of the data bus match all compared lines of the entry related to the data bus in the table. If all data lines match all compared lines of the entry then there is a “hit,” and the CAM returns the address of the matched entry. If any one of the data lines does not match any one of the compared lines, then it is a “miss,” and the CAM does not return any address. Various CAM cell design approaches include a match line and transistors each associated with a compared line. If all data lines are hit, the match line stays at its original level (e.g., high). If, however, there is a miss in any of the data lines, the transistor associated with the miss line discharges the match line, e.g., pulling it toward ground. Since there is discharging, there is also charging. Because discharging and charging the match line is dynamic, those CAMs are commonly referred to as dynamic CAMs. Dynamic CAMs are usually slow, can produce noise, cause timing problems at high frequency and/or require additional circuitry for asynchronous applications. Many dynamic CAMs also require clocking circuitry for the match pre-charge, compare operations, data lookups, etc. Lookup data and match line pre-charge require high power, and a match line of dynamic CAMs can cause current leakages, sensing difficult, and weak capacitive coupling with a neighboring match line, etc.
Like reference symbols in the various drawings indicate like elements.